/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.giant.bean.parametrics;

import com.giant.entities.Person;
import com.giant.exceptions.OperacionInvalidaException;
import com.giant.services.parametrics.ServicePersonLocal;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Harold
 */
@ManagedBean
@SessionScoped
public class PersonBean implements Serializable{

       /**
     * Relación con la interfaz que provee los servicios necesarios del vendedor
     */
    @EJB
    private ServicePersonLocal servicePerson;
    
      //-----------------------------------------------------------
    // Atributos
    //-----------------------------------------------------------

    /**
     * Representa un nuevo vendedor a ingresar
     */
    private Person person = new Person();
    /**
     * Creates a new instance of PersonBean
     */
    public PersonBean() {
        
    }
    
     //-----------------------------------------------------------
    // Getters y setters
    //-----------------------------------------------------------

    /**
     * Devuelve el objeto de vendedor actual
     * @return vendedor Vendedor actual
     */
    public Person getPerson()
    {
        return person;
    }

    /**
     * Modifica al vendedor actual
     * @param vendedor Nuevo vendedor
     */
    public void setPerson(Person person)
    {
        this.person = person;
    }

    /**
     * Devuelve todos los vendedores del sistema
     * @return vendedores Lista con todos los vendedores del sistema
     */
    public List<Person> getPersons()
    {
        return servicePerson.getPersons();
    }
    /**
     * Get persons start with string
     * @param query
     * @return 
     */
     public List<Person> completePerson(String query) {  
        List<Person> suggestions = new ArrayList<Person>();  
          
        for(Person p : servicePerson.getPersons()) {  
            if(p.getFullName().toLowerCase().startsWith(query.toLowerCase()))  
                suggestions.add(p);  
        }  
          
        return suggestions;  
    }  

    public boolean savePerson()
    {
        boolean ret=true;
        try {
            servicePerson.addPerson(person);
            person = new Person();
           FacesContext context = FacesContext.getCurrentInstance();       
            context.addMessage(null, new FacesMessage("Successful", "Save successfull")); 
            
        } catch (OperacionInvalidaException ex) {
            Logger.getLogger(PersonBean.class.getName()).log(Level.SEVERE, null, ex);
            ret=false;
        }
        
        return ret;
    }        
          
    
    

 
}
